Memory arrays can be programmed by applying a set of voltage pulses to the memory cells in a programming cycle. A voltage pulse is accompanied by a program verify operation to determine whether the memory cells are correctly programmed. In some memory arrays, e.g., high-density NAND flash memory chips, the aggregate time required to perform multiple program verify operations can be a large percentage of the overall memory programming time.